# -*- coding: utf-8 -*-
# Gestión de documentación del módulo.

## vipera, un diseñador de aplicaciones para Python
##     Copyright (C) 2011 Ángel Luis García García
##
##    This program is free software: you can redistribute it and/or modify
##    it under the terms of the GNU General Public License as published by
##    the Free Software Foundation, either version 3 of the License, or
##    (at your option) any later version.
##
##    This program is distributed in the hope that it will be useful,
##    but WITHOUT ANY WARRANTY; without even the implied warranty of
##    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
##    GNU General Public License for more details.
##
##    You should have received a copy of the GNU General Public License
##    along with this program.  If not, see <http://www.gnu.org/licenses/>.

import wx
import wx.lib.scrolledpanel as scrolled

from doc_modulo_vista import panel_doc_modulo
from i18n_vipera import t

class panel_doc_mod(scrolled.ScrolledPanel):
    '''Panel de documentación de módulo'''
    def __init__(self, parent, idioma = None):
        '''Constructor de clase'''
        scrolled.ScrolledPanel.__init__(self, parent, style = wx.TAB_TRAVERSAL|wx.SUNKEN_BORDER)
        # Idioma.
        self.l = idioma
        # Creamos panel de widgets.
        self.panel = panel_doc_modulo(self)
        # Cambiamos idioma de widgets de wxFB.
        self.panel.m_checkBox_activar.SetLabel(t(u'Crear documentación de módulo', self.l))
        self.panel.m_button_borrar.SetLabel(t(u'Borrar todo', self.l))
        self.panel.m_staticText_nombre.SetLabel(t(u'Nombre', self.l))
        self.panel.m_staticText_proposito.SetLabel(t(u'Propósito', self.l))
        self.panel.m_staticText_autor.SetLabel(t(u'Autor', self.l))
        self.panel.m_staticText_creado.SetLabel(t(u'Creado', self.l))
        self.panel.m_staticText_copyright.SetLabel(t(u'Copyright', self.l))
        self.panel.m_staticText_licencia.SetLabel(t(u'Licencia', self.l))
        # Sizer principal.
        sizer = wx.BoxSizer(wx.VERTICAL)
        sizer.Add(self.panel, 1, wx.ALL|wx.EXPAND,5)
        self.SetSizer(sizer)
        self.SetupScrolling()
        # Hacemos re-binding.
        self.panel.m_button_borrar.Bind(wx.EVT_BUTTON, self.OnBorrarTODO)

    def __limpiar(self):
        '''Limpiar widgets de documentación'''
        self.panel.m_autor.SetValue('')
        self.panel.m_copyright.SetValue('')
        self.panel.m_nombre.SetValue('')
        self.panel.m_proposito.SetValue('')
        self.panel.m_licencia.SetValue('')
        self.panel.m_datePicker_creado.SetValue(wx.DateTime.Now())
        
    def limpiar_widget(self):
        '''Limpiar widgets'''
        self.__limpiar()
        self.panel.m_checkBox_activar.Set3StateValue(wx.CHK_UNCHECKED)
        
    def OnBorrarTODO(self, event):
        '''Limpiamos widgets de documentación'''
        msj = t(u'¿Eliminar?', self.l)
        i = wx.MessageBox(msj, t(u"Atención", self.l), wx.YES_NO)
        if i != wx.YES: return
        self.__limpiar()
        
    def salvar_datos(self):
        '''Método que recorre la documentación y la devuelve en un diccionario'''        
        crear_doc = self.panel.m_checkBox_activar.Get3StateValue()
        nombre = self.panel.m_nombre.GetValue()
        proposito = self.panel.m_proposito.GetValue()
        autor = self.panel.m_autor.GetValue()
        creado = unicode(self.panel.m_datePicker_creado.GetValue().Format('%d-%m-%Y'))
        CopyRight = self.panel.m_copyright.GetValue()
        licencia = self.panel.m_licencia.GetValue()    
        # Creamos diccionario de documentación.
        documentacion = {'nombre' : nombre,
                         'proposito' : proposito,
                         'autor' : autor,
                         'creado' : creado,
                         'CopyRight' : CopyRight,
                         'licencia' : licencia,
                         'crear_doc' : crear_doc}
        # Devolvemos diccionario.
        return documentacion

    def cargar_datos(self, info):
        '''Cargamos documentación en widgets'''
        self.panel.m_nombre.SetValue(info['nombre'])
        self.panel.m_proposito.SetValue(info['proposito'])
        self.panel.m_autor.SetValue(info['autor'])
        dia, mes, anyo = info['creado'].split('-') 
        fecha = wx.DateTimeFromDMY(int(dia), int(mes) - 1, int(anyo))
        self.panel.m_datePicker_creado.SetValue(fecha)
        self.panel.m_copyright.SetValue(info['CopyRight'])
        self.panel.m_licencia.SetValue(info['licencia'])
        self.panel.m_checkBox_activar.Set3StateValue(info['crear_doc'])
    